#===istalismanplugin===
# -*- coding: utf-8 -*-

# $Revision: 55 $
# $Author: rchiganov@gmail.com $
# $Date: 2013-08-23 04:02:47 +0000 (Fri, 23 Aug 2013) $

#---------------------------------------------------------------------------------------------------

import time

#---------------------------------------------------------------------------------------------------

SEEN_FILE = 'dynamic/seen.txt'
vika_check_file(SEEN_FILE, u'{}' )
SEEN_DATA = eval(open(SEEN_FILE, 'r').read())

#---------------------------------------------------------------------------------------------------

def seen_user_list ( ptype, psource, pparameters ):
	if not GROUPCHATS.has_key(psource[1]):
		reply(ptype, psource, u'эта команда доступна только в конференции')
		return

	lparam = pparameters.split()
	if len(lparam) != 0:
		reply(ptype, psource, u'читай лучше хелп по команде, а потом пиши мне... *PUNISH*')
		return

	lhere, lnhere = [ ], [ ]
	for luser in GROUPCHATS[psource[1]].keys():
		if GROUPCHATS[psource[1]][luser]['ishere'] == 1:
			lhere.append(luser)
		else:
			lnhere.append(luser)

	lanswer  = u'\n'
	lanswer += u'Тут я вижу следующих юзеров:\n' + u', '.join(lhere)
	if len(lnhere) != 0:
		lanswer += u'\n\nА эти забегали но уже ушли:\n' + u', '.join(lnhere)
	lanswer += u'\n\nИтого %d юзеров...' % len(GROUPCHATS[psource[1]].keys())

	if ptype == 'public':
		reply(ptype, psource, u'в привате')
	reply('private', psource, lanswer)

#---------------------------------------------------------------------------------------------------

def seen_user_trace ( pgroupchat, pnick, pcode, preason ):
	if pgroupchat in GROUPCHATS.keys():
		if pgroupchat not in SEEN_DATA.keys():
			SEEN_DATA[pgroupchat] = { }
		if pnick not in SEEN_DATA[pgroupchat].keys():
			SEEN_DATA[pgroupchat][pnick] = { u'joins': time.time() }
		else:
			SEEN_DATA[pgroupchat][pnick][u'joins'] = time.time()
		write_file(SEEN_FILE, str(SEEN_DATA))

#---------------------------------------------------------------------------------------------------

def seen_user_time ( ptype, psource, pparameters ):
	if not GROUPCHATS.has_key(psource[1]):
		reply(ptype, psource, u'эта команда доступна только в конференции')
		return

	lparam = pparameters.split()
	if len(lparam) == 0:
		reply(ptype, psource, u'кого искать то? *SCRATCH*')
		return

	if len(lparam) > 1:
		reply(ptype, psource, u'что то ты не то пишешь... *SCRATCH*')
		return

	if not GROUPCHATS[psource[1]].has_key(lparam[0]) and not SEEN_DATA[psource[1]].has_key(lparam[0]):
		reply(ptype, psource, u'небыло тут таких!')
	else:
		if GROUPCHATS[psource[1]].has_key(lparam[0]):
			if GROUPCHATS[psource[1]][lparam[0]]['ishere'] != 0:
				reply(ptype, psource, u'а он все еще здесь!')
				return

		lseen = int(time.time() - SEEN_DATA[psource[1]][lparam[0]][u'joins'])
		lmem = timeElapsed(lseen)
		reply(ptype, psource, u'Пользователя ' + lparam[0] + u' видела ' + lmem + u' назад')

#---------------------------------------------------------------------------------------------------

register_leave_handler(seen_user_trace)

register_command_handler(seen_user_list, 'хтобыл', [ 'админ', 'мук', 'все' ], 20, 'Выводим список пользователей, которые заходили в конфу', 'хтобыл', [ 'хтобыл' ])
register_command_handler(seen_user_time, 'когдабыл', [ 'админ', 'мук', 'все' ], 20, 'Показывает время последнего визита пользователя', 'когдабыл <nick>', [ 'когдабыл abyba' ])

#---------------------------------------------------------------------------------------------------
